我得到了一个
注意:使用未定义的常量ord - 假设'ord'
在线
array_map(ord,str_split($string))
这是令人惊讶的,因为ord
是一个PHP功能
如果我要将呼叫重写为:
array_map(function ($x) {return ord($x);},str_split($string))
代码无需任何警告/通知即可运行
知道为什么会这样吗?
函数名应传递一个字符串到一个回调参数.
PHP函数的名称作为字符串传递.可以使用任何内置或用户定义的函数,除了语言结构,例如:array(),echo,empty(),eval(),exit(),isset(),list(),print或unset() .
array_map("ord",str_split($string))
根据编辑的问题进行编辑.
匿名函数不是某些其他可调用函数的名称,因此它们不需要作为字符串文字传递.该要求仅用于传递已定义的可调用函数的名称,而不是匿名函数.
除了常见的用户定义函数,匿名函数也可以传递给回调参数.
ord
在匿名函数中没有引号的情况下工作正常,因为在那里它不作为可调用函数传递,它只是在另一个函数体内的变量上调用.